package com.hdphone.zljutils.inter;

import android.app.Activity;
import android.graphics.Bitmap;

import androidx.annotation.NonNull;

/**
 * @author sq
 * @date 2020/10/19
 * @describe
 */
public interface IScreenUtil {

    /**
     * 获取屏幕宽度
     *
     * @return 屏幕宽度
     */
    int getScreenWidth();

    /**
     * 获取屏幕高度
     *
     * @return 屏幕高度
     */
    int getScreenHeight();

    /**
     * 获取屏幕密度
     *
     * @return 屏幕密度
     */
    float getScreenDensity();

    /**
     * 获取屏幕密度（每英寸像素点）
     *
     * @return 屏幕密度（每英寸像素点）
     */
    int getScreenDensityDpi();

    /**
     * 设置Activity全屏
     *
     * @param activity
     */
    void setFullScreen(@NonNull final Activity activity);

    /**
     * 设置Activity非全屏
     *
     * @param activity
     */
    void setNonFullScreen(@NonNull final Activity activity);

    /**
     * activity全屏/非全屏切换
     *
     * @param activity
     */
    void toggleFullScreen(@NonNull final Activity activity);

    /**
     * 判断当前activity是否为全屏
     *
     * @param activity
     * @return
     */
    boolean isFullScreen(@NonNull final Activity activity);

    /**
     * 设置activity横屏
     *
     * @param activity
     */
    void setLandscape(@NonNull final Activity activity);

    /**
     * 设置activity竖屏
     *
     * @param activity
     */
    void setPortrait(@NonNull final Activity activity);

    /**
     * 判断是否为横屏
     *
     * @return
     */
    boolean isLandscape();

    /**
     * 判断是否为竖屏
     *
     * @return
     */
    boolean isPortrait();

    /**
     * 获取activity旋转角度
     *
     * @param activity
     * @return
     */
    int getScreenRotation(@NonNull final Activity activity);

    /**
     * 屏幕截屏
     *
     * @param activity
     * @return
     */
    Bitmap screenShot(@NonNull final Activity activity);

    /**
     * 判断屏幕是否锁定
     *
     * @return
     */
    boolean isScreenLock();

    /**
     * 设置熄屏时间
     * <p>Must hold {@code <uses-permission android:name="android.permission.WRITE_SETTINGS" />}</p>
     *
     * @param duration
     */
    void setSleepDuration(final int duration);

    /**
     * 获取熄屏时间
     *
     * @return
     */
    int getSleepDuration();

    /**
     * 判断设置是否为平板
     *
     * @return
     */
    boolean isTablet();
}
